A storage system is coupled between a plurality of storage targets, such as disks, and a plurality of initiators, such as computer servers. The storage system improves memory access performance, failure recovery, and simplifies storage management. Performance improvements are achieved through caching, replication, tiering that uses the highest-performance target disks for the most commonly used data, or other means. The storage system may translate virtual disk operations to physical accesses of selected target disks, cache memory, or internal storage.
Mapping in the storage system may be coarse, where only individual disks or large portions of a disk are mapped, or fine, where small portions of a disk or even groups of blocks are mapped to a virtual address space. For caching implementations, it may be desired to have a specific and therefore small fine mapping to sizes of the cache lines. Typical line sizes for a storage cache are 4 KB (thousand bytes) and 64 KB but many values are possible. Each cache line, the smallest granularity of cached data, maintains state information regarding the corresponding cached data referred to as a tag. Cache performance is typically a function of the tag lookup speed where the storage system determines if a given cache line is present within the cache and in a valid state. Cache performance is also a function of the cache size, which includes the total memory size and resources consumed by the tags, and the supporting search structure.